package br.ufmt.model;

import br.ufmt.exception.EnderecoException;

public class Endereco {

	private String logradouro;
	private String numero;
	private String bairro;
	private String cep;
	private String complemento;
	private Cidade cidade;
	
	public String getLogradouro() {
		return logradouro;
	}
	
	public String getNumero() {
		return numero;
	}
	
	public String getBairro() {
		return bairro;
	}
	
	public String getCep() {
		return cep;
	}
	
	public String getComplemento() {
		return complemento;
	}
	
	public Cidade getCidade() {
		return cidade;
	}
	
	public void setLogradouro(String logradouro) throws EnderecoException {
		if (logradouro==null || logradouro.length()==0) throw new EnderecoException(EnderecoException.LOGRADOURO_OBRIGATORIO);
		if (logradouro.length()<5) throw new EnderecoException(EnderecoException.LOGRADOURO_TAMANHO);
		this.logradouro = logradouro;
	}
	
	public void setNumero(String numero) throws EnderecoException {
		if (numero==null || numero.length()==0) throw new EnderecoException(EnderecoException.NUMERO_OBRIGATORIO);
		this.numero = numero;
	}
	
	public void setBairro(String bairro) throws EnderecoException {
		if (bairro==null || bairro.length()==0) throw new EnderecoException(EnderecoException.BAIRRO_OBRIGATORIO);
		if (bairro.length()<5) throw new EnderecoException(EnderecoException.BAIRRO_TAMANHO);
		this.bairro = bairro;
	}
	
	public void setCep(String cep) throws EnderecoException {
		if (cep==null || cep.length()==0) throw new EnderecoException(EnderecoException.CEP_OBRIGATORIO);
		if (cep.length()!=10) throw new EnderecoException(EnderecoException.CEP_FORMATO);
		this.cep = cep;
	}
	
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}
	
	public void setCidade(Cidade cidade) throws EnderecoException {
		if (cidade==null) throw new EnderecoException(EnderecoException.CIDADE_OBRIGATORIA);
		this.cidade = cidade;
	}
	
	@Override
	public String toString() {
		return getLogradouro() + ", " + getNumero() + ". " + getBairro() + "\n" +
			   getComplemento() + "\n" + getCep() + "\n" + getCidade();
	}
}
